package com.smzd.ccms.business;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.smzd.ccms.dao.SysDictDao;
import com.smzd.ccms.domain.SysDict;
import com.smzd.core.dao.IDao;
import com.smzd.framework.core.business.AbstractFGService;
import com.smzd.framework.utils.db.FGRowConverter;

@Service
public class SysDictService extends AbstractFGService<SysDict> {
    @Autowired
    private SysDictDao dao;
    
    @Override
    protected IDao<SysDict> getDao() {
        return dao;
    }
    
    @Override
    public FGRowConverter<SysDict> getConverter() {
        return converter;
    }

    private static FGRowConverter<SysDict> converter = new FGRowConverter<SysDict>() {
        @Override
        public Object[] convert(SysDict elem) {
            Object[] fs = new Object[]{
                    elem.getId(),
                    elem.getName(),
                    elem.getDescription(),
                    elem.getKey(),
                    elem.getValue(),
                    elem.getType()
                };
                return fs;
        }
    };


	/**
	 * 根据指定的栏目的type获取系统字典配置，以找到需要配置的项目字典列表。<br>
	 * 约定：栏目的type值加上100，在系统字典表中必能找到一项配置，其value值是一组字典表的ID；
	 * 根据其value值指定的所有ID，可以找到该栏目所要配置的所有的项目字典。
	 * 
	 * @param type
	 * @return
	 */
	public SysDict getChCfgSysDictByChannelType(int type) {
		int id = 100 + type;
		return dao.getElemById(id);
	}

	/**
	 * 根据系统字典的指引，获取一个频道栏目应当进行的模板配置。<br>
	 * 该查询获取到的是以dict.value所指向的字典表为主的数据，此时有可能尚未配置ChannelConfig，<br>
	 * 因此实际上是查询SysDict列表，但要求SysDict反向给出ChannelConfig引用。
	 * 
	 * @param chId
	 * @param value
	 * @return
	 */
	public List<SysDict> getSysDictsForChCfgs(Integer chId, String value) {
		return dao.getSysDictsForChCfgs(chId, value);
	}
}